package org.gap.web.jsf;

import java.util.List;

import org.gap.dao.UtilisateursDAO;
import org.gap.dao.UtilisateursGroupeDAO;

import org.gap.domain.Utilisateurs;
import org.gap.domain.UtilisateursGroupe;

import org.gap.service.UtilisateursGroupeService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Scope;

import org.springframework.stereotype.Component;

import org.springframework.transaction.annotation.Transactional;

/**
 * Spring Component that handles CRUD requests for UtilisateursGroupe entities
 * 
 */
@Scope("session")
@Component("UtilisateursGroupeComponent")
public class UtilisateursGroupeComponentImpl implements
		UtilisateursGroupeComponent {

	/**
	 * Data type variable that provides CRUD operations for UtilisateursGroupe entities
	 * 
	 */
	private UtilisateursGroupe utilisateursgroupe;

	/**
	 * DAO injected by Spring that manages Utilisateurs entities
	 * 
	 */
	private Utilisateurs utilisateurs;

	/**
	 * DAO injected by Spring that manages Utilisateurs entities
	 * 
	 */
	@Autowired
	private UtilisateursDAO utilisateursDAO;

	/**
	 * DAO injected by Spring that manages UtilisateursGroupe entities
	 * 
	 */
	@Autowired
	private UtilisateursGroupeDAO utilisateursGroupeDAO;

	/**
	 * Service injected by Spring that provides CRUD operations for UtilisateursGroupe entities
	 * 
	 */
	@Autowired
	private UtilisateursGroupeService utilisateursGroupeService;

	/** 
	 */
	public UtilisateursGroupeComponentImpl() {
	}

	/**
	 * Save an existing UtilisateursGroupe entity
	 * 
	 */
	@Transactional
	public String saveUtilisateursGroupe(UtilisateursGroupe utilisateursgroupe) {
		utilisateursGroupeService.saveUtilisateursGroupe(utilisateursgroupe);
		return "/jsf/utilisateursgroupe/listUtilisateursGroupes.xhtml";
	}

	/**
	 * Getter for variable UtilisateursGroupe
	 * 
	 */
	@Transactional
	public UtilisateursGroupe getUtilisateursgroupe() {
		return utilisateursgroupe;
	}

	/**
	 * Create a new Utilisateurs entity
	 * 
	 */
	@Transactional
	public String newUtilisateursGroupeUtilisateurs(String utilisateursgroupe_ugrGroupe, String utilisateursgroupe_ugrUser) {
		utilisateurs = new Utilisateurs();

		return "/jsf/utilisateursgroupe/utilisateurs/createUtilisateurs.xhtml";
	}

	/**
	 * Get Utilisateurs entity by UtilisateursGroupe
	 * 
	 */
	@Transactional
	public Utilisateurs getUtilisateursGroupeUtilisateurs(String ugrGroupeKey, String ugrUserKey) {
		return utilisateursGroupeDAO.findUtilisateursGroupeByPrimaryKey(ugrGroupeKey, ugrUserKey).getUtilisateurs();
	}

	/**
	 * Select an existing UtilisateursGroupe entity
	 * 
	 */
	@Transactional
	public String selectUtilisateursGroupe(String ugrGroupeKey, String ugrUserKey) {
		utilisateursgroupe = utilisateursGroupeDAO.findUtilisateursGroupeByPrimaryKey(ugrGroupeKey, ugrUserKey);

		return "/jsf/utilisateursgroupe/viewUtilisateursGroupe.xhtml";
	}

	/**
	 * Create a new UtilisateursGroupe entity
	 * 
	 */
	@Transactional
	public String newUtilisateursGroupe() {
		utilisateursgroupe = new UtilisateursGroupe();

		return "/jsf/utilisateursgroupe/createUtilisateursGroupe.xhtml";
	}

	/**
	 * Save an existing Utilisateurs entity
	 * 
	 */
	@Transactional
	public String saveUtilisateursGroupeUtilisateurs(String utilisateursgroupe_ugrGroupe, String utilisateursgroupe_ugrUser, Utilisateurs utilisateurs) {
		utilisateursgroupe = utilisateursGroupeService.saveUtilisateursGroupeUtilisateurs(utilisateursgroupe_ugrGroupe, utilisateursgroupe_ugrUser, utilisateurs);

		return "/jsf/utilisateursgroupe/viewUtilisateursGroupe.xhtml";
	}

	/**
	 * Edit an existing Utilisateurs entity
	 * 
	 */
	@Transactional
	public String editUtilisateursGroupeUtilisateurs(String utilisateursgroupe_ugrGroupe, String utilisateursgroupe_ugrUser, String related_utilisateurs_usrUser) {
		utilisateurs = utilisateursDAO.findUtilisateursByPrimaryKey(related_utilisateurs_usrUser, -1, -1);
		return "/jsf/utilisateursgroupe/utilisateurs/editUtilisateurs.xhtml";
	}

	/**
	 * Select the child Utilisateurs entity for display allowing the user to confirm that they would like to delete the entity
	 * 
	 */
	@Transactional
	public String confirmDeleteUtilisateursGroupeUtilisateurs(String utilisateursgroupe_ugrGroupe, String utilisateursgroupe_ugrUser, String related_utilisateurs_usrUser) {
		utilisateurs = utilisateursDAO.findUtilisateursByPrimaryKey(related_utilisateurs_usrUser);

		return "/jsf/utilisateursgroupe/utilisateurs/deleteUtilisateurs.xhtml";
	}

	/**
	 * Delete an existing Utilisateurs entity
	 * 
	 */
	@Transactional
	public String deleteUtilisateursGroupeUtilisateurs(String utilisateursgroupe_ugrGroupe, String utilisateursgroupe_ugrUser, String related_utilisateurs_usrUser) {
		utilisateursgroupe = utilisateursGroupeService.deleteUtilisateursGroupeUtilisateurs(utilisateursgroupe_ugrGroupe, utilisateursgroupe_ugrUser, related_utilisateurs_usrUser);

		return "/jsf/utilisateursgroupe/viewUtilisateursGroupe.xhtml";
	}

	/**
	 * Edit an existing UtilisateursGroupe entity
	 * 
	 */
	@Transactional
	public String editUtilisateursGroupe(String ugrGroupeKey, String ugrUserKey) {
		utilisateursgroupe = utilisateursGroupeDAO.findUtilisateursGroupeByPrimaryKey(ugrGroupeKey, ugrUserKey);

		return "/jsf/utilisateursgroupe/editUtilisateursGroupe.xhtml";
	}

	/**
	 * Delete an existing UtilisateursGroupe entity
	 * 
	 */
	@Transactional
	public String deleteUtilisateursGroupe(String ugrGroupeKey, String ugrUserKey) {
		UtilisateursGroupe utilisateursgroupe = utilisateursGroupeDAO.findUtilisateursGroupeByPrimaryKey(ugrGroupeKey, ugrUserKey);
		utilisateursGroupeService.deleteUtilisateursGroupe(utilisateursgroupe);
		return "/jsf/utilisateursgroupe/listUtilisateursGroupes.xhtml";
	}

	/**
	 * Getter for variable UtilisateursGroupe
	 * 
	 */
	@Transactional
	public Utilisateurs getUtilisateurs() {
		return utilisateurs;
	}

	/**
	 * View an existing Utilisateurs entity
	 * 
	 */
	@Transactional
	public String selectUtilisateursGroupeUtilisateurs(String utilisateursgroupe_ugrGroupe, String utilisateursgroupe_ugrUser, String related_utilisateurs_usrUser) {
		utilisateurs = utilisateursDAO.findUtilisateursByPrimaryKey(related_utilisateurs_usrUser, -1, -1);
		return "/jsf/utilisateursgroupe/utilisateurs/viewUtilisateurs.xhtml";
	}

	/**
	 * Show all UtilisateursGroupe entities
	 * 
	 */
	@Transactional
	public List<UtilisateursGroupe> listUtilisateursGroupes() {
		return new java.util.ArrayList<UtilisateursGroupe>(utilisateursGroupeService.loadUtilisateursGroupes());
	}

	/**
	 * Select the UtilisateursGroupe entity for display allowing the user to confirm that they would like to delete the entity
	 * 
	 */
	@Transactional
	public String confirmDeleteUtilisateursGroupe(String ugrGroupeKey, String ugrUserKey) {
		utilisateursgroupe = utilisateursGroupeDAO.findUtilisateursGroupeByPrimaryKey(ugrGroupeKey, ugrUserKey);

		return "/jsf/utilisateursgroupe/deleteUtilisateursGroupe.xhtml";
	}

}
